/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cursoexperto.jftf.jsf.pack;

import java.util.List;
import javax.el.ELContext;
import javax.faces.context.FacesContext;
import org.cursoexperto.jftf.controller.CategoriaJpaController;
import org.cursoexperto.jftf.controller.ProductoJpaController;
import org.cursoexperto.jftf.entidades.Producto;
import org.cursoexperto.jftf.entidades.Categoria;

/**
 *
 * @author Jose Fernando
 */
public class ProductoController {

    public ProductoController() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        jpaProdController = (ProductoJpaController) facesContext.getApplication().getELResolver().getValue(facesContext.getELContext(), null, "productoJpa");
        jpaCatController = (CategoriaJpaController) facesContext.getApplication().getELResolver().getValue(facesContext.getELContext(), null, "categoriaJpa");
        categoria = null;
    }
    private Producto producto = null;
    private Categoria categoria = null;
    private List<Producto> productoItems = null;
    private ProductoJpaController jpaProdController = null;
    private CategoriaJpaController jpaCatController = null;

    public Producto getProducto() {
        if (producto == null) {
            producto = new Producto();
        }
        return producto;
    }

    /** Devuelve la lista de productos de una categoria y lo alamcena en el bean
     * @return Devuelve la redirección
     */
    public String productList() {
        categoria = null;
        Long categoriaId = null;
        categoriaId = new Long(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("categoriaSelected"));
        categoria = (Categoria) jpaCatController.findCategoria(categoriaId);
        //categoria = (Categoria) JsfUtil.getObjectFromRequestParameter("categoriaSelected", converter, null);
        //categoria = (Categoria)converter.getAsObject(null, null, null) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("categoriaSelected");
        if (categoria == null) {
            setProductoItems(jpaProdController.findAll());
        } else {
            setProductoItems(categoria.getProductoCollection());
        }
        return "producto_listado";
    }

    /** Almacena la informacion de un producto que se le pasa como paramretro en el bean
     * @return Devuelve la redirección
     */
    public String verFicha() {
        ELContext elContext = FacesContext.getCurrentInstance().getELContext();
        producto = (Producto) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "item");
        if (producto == null) {
            producto = new Producto();
        }
        return "verFicha";
    }

    public String verFichaBus() {
        ELContext elContext = FacesContext.getCurrentInstance().getELContext();
        producto = (Producto) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "item");
        if (producto == null) {
            producto = new Producto();
        }
        return "verFichaBus";
    }

    /**
     * @return the productoItems
     */
    public List<Producto> getProductoItems() {
        return productoItems;
    }

    /**
     * @param productoItems the productoItems to set
     */
    public void setProductoItems(List<Producto> productoItems) {
        this.productoItems = productoItems;
    }
}
